from logging.handlers import TimedRotatingFileHandler
import logging


class LoggerHandler(logging.Logger):
    def __init__(self,
                 name='root',
                 level='INFO',
                 file='../logs/log.log',
                 format="%(asctime)s:%(filename)s:%(lineno)s:%(levelname)s:%(message)s",
                 datefmt="%Y/%m/%d/%X"):
        # 创建日志器
        super().__init__(name, level)
        # # 设置级别
        # self.setLevel(level=level)
        # 创建格式器
        fmt = logging.Formatter(format, datefmt)

        # 文件输出渠道
        if file:
            # 将日志信息输出到指定文件
            file_handler = logging.handlers.TimedRotatingFileHandler(file,
                                                                     when='h',
                                                                     interval=24,
                                                                     backupCount=3,
                                                                     encoding="utf-8")

            # 给文件日志信息添加格式
            file_handler.setFormatter(fmt)
            # 给logger添加handler
            self.addHandler(file_handler)
        # 控制台输出渠道
        stream_handler = logging.StreamHandler()
        # 给流日志信息添加格式
        stream_handler.setFormatter(fmt)
        self.addHandler(stream_handler)


# logger = LoggerHandler(file='logger.txt')
if __name__ == '__main__':
    # logger.warning("123")
    logger = LoggerHandler()
    logger.info("1234")
